//package com.lb;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.support.SpringBeanAutowiringSupport; // 引入这个类
//
//import javax.websocket.*;
//import javax.websocket.server.PathParam;
//import javax.websocket.server.ServerEndpoint;
//import java.util.concurrent.ConcurrentHashMap;
//import java.util.concurrent.CopyOnWriteArraySet;
//
//@ServerEndpoint("/websocket/{userId}")
//@Component
//@Slf4j
//public class WebSocketServer {
//
//    private Session session;
//    private String userId;
//
//    private static final CopyOnWriteArraySet<WebSocketServer> webSockets = new CopyOnWriteArraySet<>();
//    private static final ConcurrentHashMap<String, Session> sessionPool = new ConcurrentHashMap<>();
//
//    /**
//     * 链接成功调用的方法
//     */
//    @OnOpen
//    public void onOpen(Session session, @PathParam("userId") String userId) {
//        // ✅ 关键：启用 Spring 的自动注入支持
//        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
//
//        this.session = session;
//        this.userId = userId;
//        webSockets.add(this);
//        sessionPool.put(userId, session);
//        log.info("【WebSocket】有新连接：用户ID={}, 当前总连接数={}", userId, webSockets.size());
//    }
//
//    @OnMessage
//    public void onMessage(String message) {
//        log.info("【WebSocket】收到用户 {} 的消息：{}", this.userId, message);
//    }
//
//    @OnClose
//    public void onClose() {
//        webSockets.remove(this);
//        sessionPool.remove(this.userId);
//        log.info("【WebSocket】连接关闭：用户ID={}，剩余连接数={}", this.userId, webSockets.size());
//    }
//
//    @OnError
//    public void onError(Session session, Throwable error) {
//        log.error("【WebSocket】发生错误", error);
//    }
//
//    /**
//     * 发送消息给指定用户
//     */
//    public void sendOneMessage(String userId, String message) {
//        Session session = sessionPool.get(userId);
//        if (session != null && session.isOpen()) {
//            session.getAsyncRemote().sendText(message);
//            log.info("【WebSocket】发送消息给用户 {}: {}", userId, message);
//        } else {
//            log.warn("【WebSocket】用户 {} 不在线或连接已关闭", userId);
//        }
//    }
//}